<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    
    <title>numpy.linalg.eig &mdash; NumPy v1.18 Manual</title>
    
    <link rel="stylesheet" type="text/css" href="../../_static/css/spc-bootstrap.css">
    <link rel="stylesheet" type="text/css" href="../../_static/css/spc-extend.css">
    <link rel="stylesheet" href="../../_static/scipy.css" type="text/css" >
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" >
    <link rel="stylesheet" href="../../_static/graphviz.css" type="text/css" >
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../../',
        VERSION:     '1.18.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  false
      };
    </script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="../../_static/language_data.js"></script>
    <script type="text/javascript" src="../../_static/js/copybutton.js"></script>
    <link rel="author" title="About these documents" href="../../about.html" >
    <link rel="index" title="Index" href="../../genindex.html" >
    <link rel="search" title="Search" href="../../search.html" >
    <link rel="top" title="NumPy v1.18 Manual" href="../../index.html" >
    <link rel="up" title="Linear algebra (numpy.linalg)" href="../routines.linalg.html" >
    <link rel="next" title="numpy.linalg.eigh" href="numpy.linalg.eigh.html" >
    <link rel="prev" title="numpy.linalg.svd" href="numpy.linalg.svd.html" > 
  </head>
  <body>
<div class="container">
  <div class="top-scipy-org-logo-header" style="background-color: #a2bae8;">
    <a href="../../index.html">
      <img border=0 alt="NumPy" src="../../_static/numpy_logo.png"></a>
    </div>
  </div>
</div>


    <div class="container">
      <div class="main">
        
	<div class="row-fluid">
	  <div class="span12">
	    <div class="spc-navbar">
              
    <ul class="nav nav-pills pull-left">
        <li class="active"><a href="https://numpy.org/">NumPy.org</a></li>
        <li class="active"><a href="https://numpy.org/doc">Docs</a></li>
        
        <li class="active"><a href="../../index.html">NumPy v1.18 Manual</a></li>
        

          <li class="active"><a href="../index.html" >NumPy Reference</a></li>
          <li class="active"><a href="../routines.html" >Routines</a></li>
          <li class="active"><a href="../routines.linalg.html" accesskey="U">Linear algebra (<code class="xref py py-mod docutils literal notranslate"><span class="pre">numpy.linalg</span></code>)</a></li> 
    </ul>
              
              
    <ul class="nav nav-pills pull-right">
      <li class="active">
        <a href="../../genindex.html" title="General Index"
           accesskey="I">index</a>
      </li>
      <li class="active">
        <a href="numpy.linalg.eigh.html" title="numpy.linalg.eigh"
           accesskey="N">next</a>
      </li>
      <li class="active">
        <a href="numpy.linalg.svd.html" title="numpy.linalg.svd"
           accesskey="P">previous</a>
      </li>
    </ul>
              
	    </div>
	  </div>
	</div>
        

	<div class="row-fluid">
      <div class="spc-rightsidebar span3">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="numpy.linalg.svd.html"
                        title="previous chapter">numpy.linalg.svd</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="numpy.linalg.eigh.html"
                        title="next chapter">numpy.linalg.eigh</a></p>
<div id="searchbox" style="display: none" role="search">
  <h4>Quick search</h4>
    <div>
    <form class="search" action="../../search.html" method="get">
      <input type="text" style="width: inherit;" name="q" />
      <input type="submit" value="search" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
          <div class="span9">
            
        <div class="bodywrapper">
          <div class="body" id="spc-section-body">
            
  <div class="section" id="numpy-linalg-eig">
<h1>numpy.linalg.eig<a class="headerlink" href="#numpy-linalg-eig" title="Permalink to this headline">¶</a></h1>
<dl class="function">
<dt id="numpy.linalg.eig">
<code class="sig-prename descclassname">numpy.linalg.</code><code class="sig-name descname">eig</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/numpy/numpy/blob/v1.18.1/numpy/linalg/linalg.py#L1172-L1311"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#numpy.linalg.eig" title="Permalink to this definition">¶</a></dt>
<dd><p>Compute the eigenvalues and right eigenvectors of a square array.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><dl class="simple">
<dt><strong>a</strong><span class="classifier">(…, M, M) array</span></dt><dd><p>Matrices for which the eigenvalues and right eigenvectors will
be computed</p>
</dd>
</dl>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><dl class="simple">
<dt><strong>w</strong><span class="classifier">(…, M) array</span></dt><dd><p>The eigenvalues, each repeated according to its multiplicity.
The eigenvalues are not necessarily ordered. The resulting
array will be of complex type, unless the imaginary part is
zero in which case it will be cast to a real type. When <em class="xref py py-obj">a</em>
is real the resulting eigenvalues will be real (0 imaginary
part) or occur in conjugate pairs</p>
</dd>
<dt><strong>v</strong><span class="classifier">(…, M, M) array</span></dt><dd><p>The normalized (unit “length”) eigenvectors, such that the
column <code class="docutils literal notranslate"><span class="pre">v[:,i]</span></code> is the eigenvector corresponding to the
eigenvalue <code class="docutils literal notranslate"><span class="pre">w[i]</span></code>.</p>
</dd>
</dl>
</dd>
<dt class="field-odd">Raises</dt>
<dd class="field-odd"><dl class="simple">
<dt><strong>LinAlgError</strong></dt><dd><p>If the eigenvalue computation does not converge.</p>
</dd>
</dl>
</dd>
</dl>
<div class="admonition seealso">
<p class="admonition-title">See also</p>
<dl class="simple">
<dt><a class="reference internal" href="numpy.linalg.eigvals.html#numpy.linalg.eigvals" title="numpy.linalg.eigvals"><code class="xref py py-obj docutils literal notranslate"><span class="pre">eigvals</span></code></a></dt><dd><p>eigenvalues of a non-symmetric array.</p>
</dd>
<dt><a class="reference internal" href="numpy.linalg.eigh.html#numpy.linalg.eigh" title="numpy.linalg.eigh"><code class="xref py py-obj docutils literal notranslate"><span class="pre">eigh</span></code></a></dt><dd><p>eigenvalues and eigenvectors of a real symmetric or complex Hermitian (conjugate symmetric) array.</p>
</dd>
<dt><a class="reference internal" href="numpy.linalg.eigvalsh.html#numpy.linalg.eigvalsh" title="numpy.linalg.eigvalsh"><code class="xref py py-obj docutils literal notranslate"><span class="pre">eigvalsh</span></code></a></dt><dd><p>eigenvalues of a real symmetric or complex Hermitian (conjugate symmetric) array.</p>
</dd>
</dl>
</div>
<p class="rubric">Notes</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 1.8.0.</span></p>
</div>
<p>Broadcasting rules apply, see the <a class="reference internal" href="../routines.linalg.html#module-numpy.linalg" title="numpy.linalg"><code class="xref py py-obj docutils literal notranslate"><span class="pre">numpy.linalg</span></code></a> documentation for
details.</p>
<p>This is implemented using the <code class="docutils literal notranslate"><span class="pre">_geev</span></code> LAPACK routines which compute
the eigenvalues and eigenvectors of general square arrays.</p>
<p>The number <em class="xref py py-obj">w</em> is an eigenvalue of <em class="xref py py-obj">a</em> if there exists a vector
<em class="xref py py-obj">v</em> such that <code class="docutils literal notranslate"><span class="pre">dot(a,v)</span> <span class="pre">=</span> <span class="pre">w</span> <span class="pre">*</span> <span class="pre">v</span></code>. Thus, the arrays <em class="xref py py-obj">a</em>, <em class="xref py py-obj">w</em>, and
<em class="xref py py-obj">v</em> satisfy the equations <code class="docutils literal notranslate"><span class="pre">dot(a[:,:],</span> <span class="pre">v[:,i])</span> <span class="pre">=</span> <span class="pre">w[i]</span> <span class="pre">*</span> <span class="pre">v[:,i]</span></code>
for <img class="math" src="../../_images/math/696fd9b64779f9410168f6e41379313d27d51f96.svg" alt="i \in \{0,...,M-1\}"/>.</p>
<p>The array <em class="xref py py-obj">v</em> of eigenvectors may not be of maximum rank, that is, some
of the columns may be linearly dependent, although round-off error may
obscure that fact. If the eigenvalues are all different, then theoretically
the eigenvectors are linearly independent. Likewise, the (complex-valued)
matrix of eigenvectors <em class="xref py py-obj">v</em> is unitary if the matrix <em class="xref py py-obj">a</em> is normal, i.e.,
if <code class="docutils literal notranslate"><span class="pre">dot(a,</span> <span class="pre">a.H)</span> <span class="pre">=</span> <span class="pre">dot(a.H,</span> <span class="pre">a)</span></code>, where <em class="xref py py-obj">a.H</em> denotes the conjugate
transpose of <em class="xref py py-obj">a</em>.</p>
<p>Finally, it is emphasized that <em class="xref py py-obj">v</em> consists of the <em>right</em> (as in
right-hand side) eigenvectors of <em class="xref py py-obj">a</em>.  A vector <em class="xref py py-obj">y</em> satisfying
<code class="docutils literal notranslate"><span class="pre">dot(y.T,</span> <span class="pre">a)</span> <span class="pre">=</span> <span class="pre">z</span> <span class="pre">*</span> <span class="pre">y.T</span></code> for some number <em class="xref py py-obj">z</em> is called a <em>left</em>
eigenvector of <em class="xref py py-obj">a</em>, and, in general, the left and right eigenvectors
of a matrix are not necessarily the (perhaps conjugate) transposes
of each other.</p>
<p class="rubric">References</p>
<p>G. Strang, <em>Linear Algebra and Its Applications</em>, 2nd Ed., Orlando, FL,
Academic Press, Inc., 1980, Various pp.</p>
<p class="rubric">Examples</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">linalg</span> <span class="k">as</span> <span class="n">LA</span>
</pre></div>
</div>
<p>(Almost) trivial example with real e-values and e-vectors.</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">LA</span><span class="o">.</span><span class="n">eig</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">;</span> <span class="n">v</span>
<span class="go">array([1., 2., 3.])</span>
<span class="go">array([[1., 0., 0.],</span>
<span class="go">       [0., 1., 0.],</span>
<span class="go">       [0., 0., 1.]])</span>
</pre></div>
</div>
<p>Real matrix possessing complex e-values and e-vectors; note that the
e-values are complex conjugates of each other.</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">LA</span><span class="o">.</span><span class="n">eig</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">]]))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">;</span> <span class="n">v</span>
<span class="go">array([1.+1.j, 1.-1.j])</span>
<span class="go">array([[0.70710678+0.j        , 0.70710678-0.j        ],</span>
<span class="go">       [0.        -0.70710678j, 0.        +0.70710678j]])</span>
</pre></div>
</div>
<p>Complex-valued matrix with real e-values (but complex-valued e-vectors);
note that <code class="docutils literal notranslate"><span class="pre">a.conj().T</span> <span class="pre">==</span> <span class="pre">a</span></code>, i.e., <em class="xref py py-obj">a</em> is Hermitian.</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="n">j</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="n">j</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">LA</span><span class="o">.</span><span class="n">eig</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">;</span> <span class="n">v</span>
<span class="go">array([2.+0.j, 0.+0.j])</span>
<span class="go">array([[ 0.        +0.70710678j,  0.70710678+0.j        ], # may vary</span>
<span class="go">       [ 0.70710678+0.j        , -0.        +0.70710678j]])</span>
</pre></div>
</div>
<p>Be careful about round-off error!</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span> <span class="o">+</span> <span class="mf">1e-9</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="mf">1e-9</span><span class="p">]])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="c1"># Theor. e-values are 1 +/- 1e-9</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">LA</span><span class="o">.</span><span class="n">eig</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">w</span><span class="p">;</span> <span class="n">v</span>
<span class="go">array([1., 1.])</span>
<span class="go">array([[1., 0.],</span>
<span class="go">       [0., 1.]])</span>
</pre></div>
</div>
</dd></dl>

</div>


          </div>
        </div>
          </div>
        </div>
      </div>
    </div>

    <div class="container container-navbar-bottom">
      <div class="spc-navbar">
        
      </div>
    </div>
    <div class="container">
    <div class="footer">
    <div class="row-fluid">
    <ul class="inline pull-left">
      <li>
        &copy; Copyright 2008-2019, The SciPy community.
      </li>
      <li>
      Last updated on Feb 20, 2020.
      </li>
      <li>
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.4.2.
      </li>
    </ul>
    </div>
    </div>
    </div>
  </body>
</html>